// 引入 express
const { request, response } = require('express')
const express = require('express')
// 连接数据库
const mysql = require('mysql')
const connection = mysql.createConnection({
  host: 'localhost', // 数据库服务器主机
  user: 'root', // 连接数据库的用户名
  password: '123456', // 密码
  database: 'lol' // 数据库名
})
// 连接
connection.connect()

// 创建 Express 应用实例
const app = express()

// 解决 CORS 跨域访问问题
app.use((req, res, next) => {
  res.set('Access-Control-Allow-Origin', '*') // 指定允许跨域的源
  // res.set('Access-Control-Allow-Methods', 'GET,POST,PUT,DELETE,OPTIONS') // 指定允许跨域的请求方法
  next()
})
// 用于处理请求主体中的数据
app.use(express.json()) // for parsing application/json
app.use(express.urlencoded({ extended: true })) // for parsing application/x-www-form-urlencoded

// 托管静态资源
app.use(express.static('src'))

// 处理 POST 请求，用户注册
app.post('/register.do', (req, res, next) => {
  // 从请求的主体（body）中获取传递的数据
  const { username, password } = req.body
  /* 将注册的用户信息保存到数据库 users 表中 */
  const sql = 'INSERT INTO users(username, password) VALUES(?, ?)'
  const params = [username, password]
  connection.query(sql, params, (err, result) => {
    if (err) {
      res.send('400')
      return
    }
    res.send('200')
  })
})
// 查询是否存在用户名
app.post('/exist', (req, res, next) => {
  const { username } = req.body
  const sql = 'SELECT COUNT(*) AS count FROM users WHERE username=?'
  const params = [username]
  connection.query(sql, params, (err, result) => {
    if (err) {
      res.send('有错误')
      return
    }
    if (result[0].count >= 1) {
      res.send('昵称已被占用')
    } else {
      res.send('昵称可使用')
    }
  })
})
// 处理 POST 请求，用户登录
app.post('/', (req, res, next) => {
  // 从请求的主体（body）中获取传递的数据
  const { username, password } = req.body
  /* 将注册的用户信息保存到数据库 users 表中 */
  const sql = 'SELECT COUNT(*) as count FROM users WHERE username=? AND password=?'
  const params = [username, password]
  connection.query(sql, params, (err, result) => {
    if (err) {
      res.json(800)
      return
    }
    if (result[0].count !== 1) {
      res.json(400)
    } else {
      res.json(200)
    }
  })
})
// 监听端口，等待客户端浏览器连接
app.listen(9527, () => console.log('Server running at http://localhost:9527'))